home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 1 of 2).iso / utilities / u200.dms / u200.adf / Eliza.bas < prev    next >
BASIC Source File  |  1992-04-24  |  7KB  |  243 lines

  1. ' Eliza.bas
  2.  
  3. ' a program originally written 1979
  4. ' by Jeff Shrager and Steve North
  5. ' revamped for Amiga in November 1990
  6. ' by Phil South
  7. ' for Amiga Format
  8.  
  9. ' To run this program use either AmigaBasic, Hisoft Basic
  10. ' or your favourite Basic interpreter
  11.  
  12. init:
  13. DIM C$(72),I$(72),K$(72),F$(72),S$(72),R$(72),p$(72),Z$(72)
  14. DIM S(36),R(36),N(36),p%(8)
  15. p%(0)=180: p%(1)=0: p%(2)=140: p%(3)=1: p%(4)=26000
  16. p%(5)=64: p%(6)=10: p%(7)=0: p%(8)=0
  17. N1=36:N2=12:N3=112
  18.  
  19. PRINT "PLEASE TURN ON YOUR 'CAPS LOCK' KEY."
  20. PRINT "TO STOP TYPE 'SHUT UP'..."
  21.  
  22. FOR X=1 TO N1+N2+N3
  23. READ Z$
  24. NEXT X
  25.  
  26. FOR X=1 TO N1
  27. READ S(X),L:R(X)=S(X):N(X)=S(X)+L-1
  28. NEXT X
  29.  
  30. PRINT "HI!  I'M ELIZA.  WHAT'S YOUR PROBLEM?"
  31.  
  32. ' Input section
  33.  
  34. inmput:
  35. INPUT I$
  36. I$=" "+I$+" "
  37.  
  38. ' Strip apostrophes
  39.  
  40. apos:
  41. FOR L=1 TO LEN(I$): IF MID$(I$,L,1)="'" THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L): GOTO apos
  42.  
  43. czechshut:
  44. IF L+4<=LEN(I$) THEN GOTO nd ELSE GOTO rep
  45.  
  46. nd:
  47. IF MID$(I$,L,4)="SHUT" THEN Z9$="SHUT UP..": PRINT Z9$: END
  48.  
  49. rep:
  50. NEXT L
  51. IF I$=p$ THEN Z9$="PLEASE DON'T REPEAT YOURSELF!": PRINT Z9$: GOTO inmput
  52.  
  53. ' Find keyword in I$
  54.  
  55. findkey:
  56. RESTORE
  57. S=0
  58. FOR K=1 TO N1
  59. READ K$
  60. IF S>0 THEN donald
  61. FOR L=1 TO LEN(I$)-LEN(K$)+1
  62. IF MID$(I$,L,LEN(K$))=K$ THEN S=K:T=L:F$=K$
  63. NEXT L
  64.  
  65. donald:
  66. NEXT K
  67. IF S>0 THEN K=S:L=T: GOTO louis
  68. K=36: GOTO scrooge
  69.  
  70. louis:
  71. RESTORE:FOR X=1 TO N1:READ Z$:NEXT X
  72. C$=" "+RIGHT$(I$,LEN(I$)-LEN(F$)-L+1)
  73. FOR X=1 TO N2/2
  74. READ S$,R$
  75. FOR L=1 TO LEN(C$)
  76. IF L+LEN(S$)>LEN(C$) THEN dewey
  77. IF MID$(C$,L,LEN(S$))<>S$ THEN dewey
  78. C$=LEFT$(C$,L-1)+R$+RIGHT$(C$,LEN(C$)-L-LEN(S$)+1)
  79. L=L+LEN(R$)
  80. GOTO hewey
  81.  
  82. dewey:
  83. IF L+LEN(R$)>LEN(C$) THEN hewey
  84. IF MID$(C$,L,LEN(R$))<>R$ THEN hewey
  85. C$=LEFT$(C$,L-1)+S$+RIGHT$(C$,LEN(C$)-L-LEN(R$)+1)
  86. L=L+LEN(S$)
  87.  
  88. hewey:
  89. NEXT L
  90. NEXT X
  91. IF MID$(C$,2,1)=" " THEN C$=RIGHT$(C$,LEN(C$)-1)
  92.  
  93. ' Now get reply
  94.  
  95. scrooge:
  96. RESTORE:FOR X=1 TO N1+N2:READ Z$:NEXT X
  97. FOR X=1 TO R(K):READ F$:NEXT X
  98. R(K)=R(K)+1
  99. IF R(K)>N(K) THEN R(K)=S(K)
  100. IF RIGHT$(F$,1)<>"*" THEN Z9$=F$: PRINT F$:p$=I$: GOTO inmput
  101. Z9$=LEFT$(F$,LEN(F$)-1)+C$:PRINT Z9$
  102. p$=I$: GOTO inmput
  103.  
  104. ' Program Data
  105.  
  106. ' Keywords
  107.  
  108. 810   DATA "CAN YOU","CAN I","YOU ARE","YOURE","I DONT","I FEEL"
  109. 820   DATA "WHY DONT YOU","WHY CANT I","ARE YOU","I CANT","I AM","IM "
  110. 830   DATA "YOU ","I WANT","WHAT","HOW","WHO","WHERE","WHEN","WHY"
  111. 840   DATA "NAME","CAUSE","SORRY","DREAM","HELLO","HI ","MAYBE"
  112. 850   DATA " NO","YOUR","ALWAYS","THINK","ALIKE","YES","FRIEND"
  113. 860   DATA "COMPUTER","NOKEYFOUND"
  114.  
  115. ' String data for conjugations
  116.  
  117. 900   DATA " ARE "," AM ","WERE ","WAS "," YOU "," I ","YOUR ","MY "
  118. 910   DATA " IVE "," YOUVE "," IM "," YOURE "
  119.  
  120. ' Replies
  121.  
  122. 950   DATA "DON'T YOU BELIEVE THAT I CAN*"
  123. 960   DATA "PERHAPS YOU WOULD LIKE TO BE ABLE TO*"
  124. 970   DATA "YOU WANT ME TO BE ABLE TO*"
  125. 980   DATA "PERHAPS YOU DON'T WANT TO*"
  126. 990   DATA "DO YOU WANT TO BE ABLE TO*"
  127. 1000  DATA "WHAT MAKES YOU THINK I AM*"
  128. 1010  DATA "DOES IT PLEASE YOU TO BELIEVE I AM*"
  129. 1020  DATA "PERHAPS YOU WOULD LIKE TO BE*"
  130. 1030  DATA "DO YOU SOMETIMES WISH YOU WERE*"
  131. 1040  DATA "DON'T YOU REALLY*"
  132. 1050  DATA "WHY DON'T YOU*"
  133. 1060  DATA "DO YOU WISH TO BE ABLE TO*"
  134. 1070  DATA "DOES THAT TROUBLE YOU?"
  135. 1080  DATA "TELL ME MORE ABOUT SUCH FEELINGS."
  136. 1090  DATA "DO YOU OFTEN FEEL*"
  137. 1100  DATA "DO YOU ENJOY FEELING*"
  138. 1110  DATA "DO YOU REALLY BELIEVE I DON'T*"
  139. 1120  DATA "PERHAPS IN GOOD TIME I WILL*"
  140. 1130  DATA "DO YOU WANT ME TO*"
  141. 1140  DATA "DO YOU THINK YOU SHOULD BE ABLE TO*"
  142. 1150  DATA "WHY CAN'T YOU*"
  143. 1160  DATA "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*"
  144. 1170  DATA "WOULD YOU PREFER IF I WERE NOT*"
  145. 1180  DATA "PERHAPS IN YOUR FANTASIES I AM*"
  146. 1190  DATA "HOW DO YOU KNOW YOU CAN'T*"
  147. 1200  DATA "HAVE YOU TRIED?"
  148. 1210  DATA "PERHAPS YOU CAN NOW*"
  149. 1220  DATA "DID YOU COME TO ME BECAUSE YOU ARE*"
  150. 1230  DATA "HOW LONG HAVE YOU BEEN*"
  151. 1240  DATA "DO YOU BELIEVE IT IS NORMAL TO BE*"
  152. 1250  DATA "DO YOU ENJOY BEING*"
  153. 1260  DATA "WE WERE DISCUSSING YOU-- NOT ME."
  154. 1270  DATA "OH, I*"
  155. 1280  DATA "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?"
  156. 1290  DATA "WHAT WOULD IT MEAN TO YOU IF YOU GOT*"
  157. 1300  DATA "WHY DO YOU WANT*"
  158. 1310  DATA "SUPPOSE YOU SOON GOT*"
  159. 1320  DATA "WHAT IF YOU NEVER GOT*"
  160. 1330  DATA "I SOMETIMES ALSO WANT*"
  161. 1340  DATA "WHY DO YOU ASK?"
  162. 1350  DATA "DOES THAT QUESTION INTEREST YOU?"
  163. 1360  DATA "WHAT ANSWER WOULD PLEASE YOU THE MOST?"
  164. 1370  DATA "WHAT DO YOU THINK?"
  165. 1380  DATA "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?"
  166. 1390  DATA "WHAT IS IT THAT YOU REALLY WANT TO KNOW?"
  167. 1400  DATA "HAVE YOU ASKED ANYONE ELSE?"
  168. 1410  DATA "HAVE YOU ASKED SUCH QUESTIONS BEFORE?"
  169. 1420  DATA "WHAT ELSE COME TO MIND WHEN YOU ASK THAT?"
  170. 1430  DATA "NAMES DON'T INTEREST ME."
  171. 1440  DATA "I DON'T CARE ABOUT NAMES-- PLEASE GO ON."
  172. 1450  DATA "IS THAT THE REAL REASON?"
  173. 1460  DATA "DON'T ANY OTHER REASONS COME TO MIND?"
  174. 1470  DATA "DOES THAT REASON EXPLAIN ANYTHING ELSE?"
  175. 1480  DATA "WHAT OTHER REASONS MIGHT THERE BE?"
  176. 1490  DATA "PLEASE DON'T APOLOGIZE!"
  177. 1500  DATA "APOLOGIES ARE NOT NECESSARY."
  178. 1510  DATA "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE."
  179. 1520  DATA "DON'T BE SO DEFENSIVE!"
  180. 1530  DATA "WHAT DOES THAT DREAM SUGGEST TO YOU?"
  181. 1540  DATA "DO YOU DREAM OFTEN?"
  182. 1550  DATA "WHAT PERSONS APPEAR IN YOUR DREAMS?"
  183. 1560  DATA "ARE YOU DISTURBED BY YOUR DREAMS?"
  184. 1570  DATA "HOW DO YOU DO ... PLEASE STATE YOUR PROBLEM."
  185. 1580  DATA "YOU DON'T SEEM QUITE CERTAIN."
  186. 1590  DATA "WHY THE UNCERTAIN TONE?"
  187. 1600  DATA "CAN'T YOU BE MORE POSITIVE?"
  188. 1610  DATA "YOU AREN'T SURE?"
  189. 1620  DATA "DON'T YOU KNOW?"
  190. 1630  DATA "ARE YOU SAYING NO JUST TO BE NEGATIVE?"
  191. 1640  DATA "YOU ARE BEING A BIT NEGATIVE."
  192. 1650  DATA "WHY NOT?"
  193. 1660  DATA "ARE YOU SURE?"
  194. 1670  DATA "WHY NO?"
  195. 1680  DATA "WHY ARE YOU CONCERNED ABOUT MY*"
  196. 1690  DATA "WHAT ABOUT YOUR OWN*"
  197. 1700  DATA "CAN YOU THINK OF A SPECIFIC EXAMPLE?"
  198. 1710  DATA "WHEN?"
  199. 1720  DATA "WHAT ARE YOU THINKING OF?"
  200. 1730  DATA "REALLY, ALWAYS?"
  201. 1740  DATA "DO YOU REALLY THINK SO?"
  202. 1750  DATA "BUT YOU ARE NOT SURE YOU*"
  203. 1760  DATA "DO YOU DOUBT YOU*"
  204. 1770  DATA "IN WHAT WAY?"
  205. 1780  DATA "WHAT RESEMBLANCE DO YOU SEE?"
  206. 1790  DATA "WHAT DOES THE SIMILARITY SUGGEST TO YOU?"
  207. 1800  DATA "WHAT OTHER CONNECTIONS DO YOU SEE?"
  208. 1810  DATA "COULD THERE REALLY BE SOME CONNECTION?"
  209. 1820  DATA "HOW?"
  210. 1830  DATA "YOU SEEM QUITE POSITIVE."
  211. 1840  DATA "ARE YOU SURE?"
  212. 1850  DATA "I SEE."
  213. 1860  DATA "I UNDERSTAND."
  214. 1870  DATA "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?"
  215. 1880  DATA "DO YOUR FRIENDS WORRY YOU?"
  216. 1890  DATA "DO YOUR FRIENDS PICK ON YOU?"
  217. 1900  DATA "ARE YOU SURE YOU HAVE ANY FRIENDS?"
  218. 1910  DATA "DO YOU IMPOSE ON YOUR FRIENDS?"
  219. 1920  DATA "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU."
  220. 1930  DATA "DO COMPUTERS WORRY YOU?"
  221. 1940  DATA "ARE YOU TALKING ABOUT ME IN PARTICULAR?"
  222. 1950  DATA "ARE YOU FRIGHTENED BY MACHINES?"
  223. 1960  DATA "WHY DO YOU MENTION COMPUTERS?"
  224. 1970  DATA "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?"
  225. 1980  DATA "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?"
  226. 1990  DATA "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?"
  227. 2000  DATA "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?"
  228. 2010  DATA "WHAT DOES THAT SUGGEST TO YOU?"
  229. 2020  DATA "I SEE."
  230. 2030  DATA "I'M NOT SURE I UNDERSTAND YOU FULLY."
  231. 2040  DATA "COME COME ELUCIDATE YOUR THOUGHTS."
  232. 2050  DATA "CAN YOU ELABORATE ON THAT?"
  233. 2060  DATA "THAT IS QUITE INTERESTING"
  234.  
  235. ' Data for finding replies
  236.  
  237. DATA 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3
  238. DATA 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9
  239. DATA 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4
  240. DATA 80,3,83,7,90,3,93,6,99,7,106,6
  241.  
  242. END
  243.